package com.atguigu.realtime;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author lzc
 * @Date 2020/11/25 13:48
 */
public class RegexDemo2 {
    public static void main(String[] args) throws IOException {
        /*String s = "a12b34";

        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher = pattern.matcher(s);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }*/

        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("c:/jps.txt"), "gbk"));

        String s = "";
        String line;
        while((line = reader.readLine()) != null){
            s += line + "\n";
        }

        // https://s1.tuchong.com/content-image/202004/ad359828a7d37233b329c1e36e4a253f.jpg   https://s1.tuchong.com/content-image/202004/ad359828a7d37233b329c1e36e4a253f.jpg
        Pattern pattern = Pattern.compile("https?:[^:]+\\.(jpg|png|jpeg|gif)");
        Matcher matcher = pattern.matcher(s);
        while (matcher.find()) {
            System.out.println(matcher.group().replace("\\", ""));
        }

    }
}
/*
量词支持两种模式:
    贪婪模式(默认)
    懒惰模式 ?

正则的语法:
[abc] 或a或者b或c
[a-z] 小写字母
[a-zA-Z] 任意字母
[a-zA-Z0-9_] 数字字母下划线
[^a] 非a
[^abc] 非a 非b 非c
注意: ^表示非. 只有在 [ ] 内的时候, 才表示非, 否则表示 开头
\w  表示单词字符串 等价于 [a-zA-Z0-9_]
\W  表示非单词字符 [^a-zA-Z0-9_]
\d  表示数字 digital  [0-9]
\D  表示非数字
\s  表示空白字符串  space:   空格 \t \r \n
\S  非空白字符串
.   任意字符 除了: \r \n
\.  匹配点

数量词:
a{m}  匹配m个a
a{m,}  至少m个a
a{m,n}  至少m个a, 至多n个a

a? 表示0个或1个   等价于 a{0,1}
a* 0个或多个a  等价于 a{0,}
a+ 1个或多个a  等价于 a{1,}






正则表达式
RegularExpression
工具: 处理文本的工具
------------
Pattern

Matcher

java中为了更加方便的使用正则表达式,
java的字符串提供了四个方法, 可以直接接受正则表达式
matches
replaceAll
replaceFirst
split


-----------------
贪官                  字符串

法律                  正则



*/